from tkinter import *
from tkinter import messagebox


# 定义类继承于画纸对象
class Application(Frame):
    '''经典的GUI程序类的写法'''

    def __init__(self, master=None):  # master模板容器，画纸放到哪
        # 继承方法，父类的重新定义
        super().__init__(master)  # 定义属性
        self.master = master
        self.pack()  # 画纸几何布局，默认摆放
        self.CreatWidget()  # 创建示例对象时，自动进行调用

    def CreatWidget(self):
        '''创建组件'''
        self.label01 = Label(self, text='用户名')
        self.label01.pack()

        # 获取输入框的信息，输入框的内容是可变的
        # v1是可变的,创建变量StringVar绑定到组件上,StringVar发生变化，组件内容entry01的值也会发生变化
        v1 = StringVar()
        self.entry01 = Entry(self, textvariable=v1)
        self.entry01.pack()
        v1.set('admin')  # 设置默认值为admin
        print(v1.get())  # 获取变量的信息
        print(self.entry01.get())  # 获取输入框的信息

        self.label02 = Label(self, text='密码')
        self.label02.pack()
        v2 = StringVar()
        self.entry02 = Entry(self, textvariable=v2)
        self.entry02.pack()

        Button(self, text='登录', command=self.login).pack()

    def login(self):
        # 用组件接受用户输入的信息
        username = self.entry01.get()
        psd = self.entry02.get()
        print('去数据库比对账号和密码')
        print('用户名' + username)
        print('密码' + psd)
        if username == 'xuexi001' and psd == '123456':
            messagebox.showinfo('学习系统', '登录成功，开始学习')
        else:
            messagebox.showinfo('学习系统', '登录失败，用户名或密码错误！')


if __name__ == '__main__':  # 程序入口，里面的本文件内调用，其他程序访问不到
    root = Tk()  # 创建主窗口
    root.title('标题-经典GUI程序类的测试')
    root.geometry('300x300+900+300')

    # 创建画纸对象放到root画板上
    Application(master=root)
    root.mainloop()  # 消息循环
